package DesignPattern.Singleton;

/**
 * @Author self
 * @Date 2024/8/11 17:40
 */

/*
静态内部类方式实现单例，既保证了延迟加载，又由 JVM 提供了线程安全保障。
*/
/*静态内部类的实现方式能够保证延迟加载，是因为 Java 的类加载机制：
        外部类在被加载时，静态内部类不会立即被加载，只有在需要时才会被加载并初始化，从而实现延迟加载。
        与此同时，JVM 的类加载过程天然具有线程安全性，从而使得这种实现方式既高效又安全。*/
public class SingletonStaticInnerClass {
    private SingletonStaticInnerClass() {}

    // 静态内部类，延迟加载单例实例
    private static class SingletonHolder {
        private static final SingletonStaticInnerClass INSTANCE = new SingletonStaticInnerClass();
    }

    public static SingletonStaticInnerClass getInstance() {
        return SingletonHolder.INSTANCE;
    }
}
